/******************************************************************************************************
*******************************************************************************************************
*/

#ifndef __ANDROID_LOG_H__
#define __ANDROID_LOG_H__

#include <android/log.h>

#if 0
#define ALOGV(...) ;
#define ALOGD(...) ;
#define ALOGW(...) ;
#define ALOGE(...) ;
#else
#define ALOGV(...) ;
#define ALOGI(fmt,args...)          __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,fmt,## args)
#define ALOGD(fmt,args...)          __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,fmt,## args)
#define ALOGW(fmt,args...)          __android_log_print(ANDROID_LOG_WARN,LOG_TAG,fmt,## args)
#define ALOGE(fmt,args...)          __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,fmt,## args)
#endif

#if 0
#define TRACE(...) \
    do { \
        printf("TRACE:**%s**",  __FILE__); \
        printf(__VA_ARGS__); \
        printf("\n"); \
    } while(0)
#else
#define TRACE(...) ;
#endif

#define ASSERT(exp) \
    do { \
        if (!(exp)) { \
            __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "\nASSERT("#exp") fail: %s, %uL\n",  __FILE__ , __LINE__); \
        } \
    } while(0)

#define LOG_FATAL_IF(cond, ...) \
    do { \
        if (cond) { \
            __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "FATAL:**%s**",  __FILE__); \
            __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__); \
        } \
    } while(0)

#define ALOG_ASSERT(cond, ...) \
    do { \
        if (!(cond)) { \
            __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "\nASSERT:**%s**",  __FILE__); \
            __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__); \
        } \
    } while(0)

#endif
